package org.zs.miracle.service.auth.model.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import java.io.Serial;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.zs.miracle.common.base.vo.BaseIdAndTimeVO;
import org.zs.miracle.entity.enums.GenderEnum;
import org.zs.miracle.service.resources.model.vo.ResourcesVo;
import org.zs.miracle.service.role.model.vo.RoleVo;

@Schema(description = "认证用户信息")
@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
public class AuthenticationUserDetailVO extends BaseIdAndTimeVO {
  
  @Serial
  private static final long serialVersionUID = 1668055235809325493L;
  
  /**
   * 用户名
   */
  @Schema(description = "用户名")
  private String username;
  
  /**
   * 账号
   */
  @Schema(description = "账号")
  private String account;
  
  /**
   * 性别
   */
  @Schema(description = "性别")
  private GenderEnum gender;
  
  /**
   * 手机号
   */
  @Schema(description = "手机号")
  private String phone;
  
  /**
   * 头像url
   */
  @Schema(description = "头像url")
  private String avatarUrl;
  
  /**
   * 备注信息
   */
  @Schema(description = "头像url")
  private String remark;
  
  /**
   * 最后登录时间
   */
  @Schema(description = "最后登录时间")
  private LocalDateTime lastLoginTime;
  
  /**
   * 角色列表
   */
  @Schema(description = "角色列表")
  private List<RoleVo> roles = new ArrayList<>();
  
  /**
   * 权限列表
   */
  @Schema(description = "权限列表")
  private List<ResourcesVo> permissions = new ArrayList<>();
}